From: Rui Matos Date: Wed, 13 May 2015 19:42:13 +0000 (+0200) Subject: ScreenShield: only inhibit suspend if we're the active session X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~1352 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=182b1c194149be8e41cb357968279cf05eaabce2;p=gnome-shell.git ScreenShield: only inhibit suspend if we're the active session If we aren't the active session clutter can't animate and thus we can't expect the shield to be shown before releasing the suspend inhibitor so we should release it immediately when becoming inactive. https://bugzilla.gnome.org/show_bug.cgi?id=749228 --- diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index e81c782f3..d8d991c20 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -511,11 +511,14 @@ const ScreenShield = new Lang.Class({ this._loginManager.connect('prepare-for-sleep', Lang.bind(this, this._prepareForSleep)); + this._loginSession = null; this._loginManager.getCurrentSessionProxy(Lang.bind(this, function(sessionProxy) { this._loginSession = sessionProxy; this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); })); this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); })); + this._loginSession.connect('g-properties-changed', Lang.bind(this, this._syncInhibitor)); + this._syncInhibitor(); })); this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); @@ -675,7 +678,8 @@ const ScreenShield = new Lang.Class({ }, _syncInhibitor: function() { - let inhibit = (!this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY)); + let inhibit = (this._loginSession && this._loginSession.Active && + !this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY)); if (inhibit) { this._loginManager.inhibit(_("GNOME needs to lock the screen"), Lang.bind(this, function(inhibitor) {